package gestores.administracion;


import dal.MicrositioDAL;

import excepciones.AvwException;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

import java.util.ArrayList;
import java.util.logging.Logger;
import java.util.HashMap;

import java.util.logging.Level;

import negocio.MicrositioWeb;
import util.Recurso;

import util.Utiles;

public class GestorMicrositio {
    static final Logger logger = Utiles.iniciarLogger("GestorMicrositio", true);
    static Recurso recurso = new Recurso("negocio.properties");
    
    /**
     * Constructor
     */
    public GestorMicrositio() {
    }
    
    public static ArrayList<HashMap> listarMicrositios()throws NullPointerException{
        ArrayList<HashMap> micrositios = new ArrayList<HashMap>();
        
        try {
            for (MicrositioWeb msw : MicrositioDAL.listarMicrositios()){
                HashMap micrositioHash = new HashMap();
                micrositioHash.put("mswCodigo", msw.getMswCodigo());
                micrositioHash.put("mswNombre", msw.getMswNombre());
                micrositioHash.put("mswUrl", msw.getMswUrl());
                micrositioHash.put("mswTelefono", msw.getMswTelefono());
                micrositios.add(micrositioHash);
            }
        } catch (AvwException e) {
            logger.log(Level.SEVERE, e.getMensaje(), e);
        }
        
        return micrositios;
    }
    
    public static void insertarMicrositio(String nombre, String url, String telefono)throws AvwException{
        MicrositioWeb micrositioWeb = new MicrositioWeb();
        
        micrositioWeb.setMswNombre(nombre);
        micrositioWeb.setMswUrl(url);
        micrositioWeb.setMswTelefono(telefono);
        
            MicrositioDAL.insertarMicrositio(micrositioWeb);
            //insertamos micrositios
            try {
            StringBuilder path = new StringBuilder();
            File f; 
            FileWriter writer;
            //Crear Carpeta de usuario 
            path.append(recurso.obtenerPropiedad("dirBase"));
            path.append(nombre.toLowerCase());
            f = new File(path.toString() );
            f.mkdir();
            path.append("/index.jsp");
            writer = new FileWriter(path.toString());
            path.setLength(0);
            path.append("<% \n response.sendRedirect(\"../micros/index?micro=");
            path.append(MicrositioDAL.obtenerUltimoMicroInsertado().getMswCodigo());
            path.append("\"); \n %>");
            writer.write(path.toString());
            writer.close();
            /**
            path.append(recurso.obtenerPropiedad("dirBase"));
            path.append(micrositioWeb.getMswNombre());
            path.append("/index.jsp");
            File dir = new File(path.toString());
            FileWriter writer ;
            if(dir.exists()){throw new AvwException("El directorio ya existe.<br>Intente con otro nombre.");}
            dir.mkdir();
            
                writer = new FileWriter(path.toString());
                path.setLength(0);
                path.append("<% \n response.sendRedirect(\"../micros/index?micro=");
                path.append(MicrositioDAL.obtenerUltimoMicroInsertado().getMswCodigo());
                path.append("\"); \n %>");
                writer.write(path.toString());
                writer.close();
                **/
            } catch (IOException ex) {
                throw new AvwException("Ocurrio un error inesperado.");
            }
            
    }
    
    public static Boolean eliminarMicrositio(String codigo){
        MicrositioWeb micrositioWeb = new MicrositioWeb(codigo);
        try{
            MicrositioDAL.eliminarMicrositio(micrositioWeb);
            return true;
        }catch(AvwException e){
            logger.log(Level.SEVERE, e.getMensaje(), e);
            return false;
        }
    }
    
    public static HashMap obtenerDatosMicrositio(String codigo)throws NullPointerException{
        HashMap micrositio = new HashMap();
        
        MicrositioWeb micrositioWeb = new MicrositioWeb(codigo);
        
        try {
            micrositioWeb = MicrositioDAL.obtenerMicrositio(micrositioWeb);            
            
            micrositio.put("mswCodigo",micrositioWeb.getMswCodigo());
            micrositio.put("mswNombre",micrositioWeb.getMswNombre());
            micrositio.put("mswTelefono",micrositioWeb.getMswTelefono());
            micrositio.put("mswUrl",micrositioWeb.getMswUrl());
        } catch (AvwException e) {
            logger.log(Level.SEVERE, e.getMensaje(), e);
        }
        
        return micrositio;
    }
    
    public static void modificarMicrositio(String codigo, String telefono){
        MicrositioDAL micrositioDal = new MicrositioDAL();
        MicrositioWeb micrositioWeb = new MicrositioWeb(codigo);
        micrositioWeb.setMswTelefono(telefono);
        
        try{
            micrositioDal.modificarMicrositio(micrositioWeb);
            
        }catch(AvwException e){
            logger.log(Level.SEVERE, e.getMensaje(), e);
            
        }
    }
}
